วิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge
UI ของ Event Bridge เปลี่ยนไปมาก จึงทำการเขียนบทความใหม่ ดังนั้นโปรดดูที่บทความนี้
【Update】วิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge
ครั้งนี้จะมาแนะนำวิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge ต่อจากบทความ วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy และ วิธีเชื่อมโยง Elastic IP (EIP) ไปยัง EC2 Instance
สิ่งที่ต้องมี
ก่อนอื่นต้องทำการติดตั้ง EC2 Instance สามารถดูวิธีการทำได้ที่คำอธิบายและลิงก์ด้านล่างนี้
※ชื่อ Key Pairs และ EC2 Instance ของบทความนี้คือtinnakorn-schedule-start
※หัวข้อ ❌3. Connect to EC2 by PuTTY ไม่ต้องทำ
※Link : วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy
เมื่อติดตั้ง EC2 Instance เสร็จเรียบร้อยแล้ว ให้ทำการเชื่อมโยง Elastic IP ไปยัง EC2 Instance เพื่อไม่ให้ IP Address เกิดการเปลี่ยนแปลง สามารถทำตามขั้นตอนได้ที่ลิงก์ด้านล่างนี้ได้เลย
เมื่อทำวิธีตามด้านบนนี้เสร็จเรียบร้อยแล้ว ให้ Stop EC2 Instance เตรียมไว้
การสร้าง Rule ใน IAM
เมื่อ Stop EC2 Instance เตรียมไว้แล้ว ให้สร้าง Role ใน IAM ก่อน เพื่อนำไปใช้ในขั้นตอนของ วิธีตั้งค่ากำหนดการ Start EC2 Instance
เข้ามาที่ Service IAM โดยค้นหา?︎ IAM
» เลือกIAM
มาที่เมนูด้านซ้าย เลือกRoles
คลิกCreate role
การตั้งค่า Step 1 : Select trusted entity นี้คือ:
Trusted entity type
» เลือกAWS service
Use case
» Common use cases:EC2
» คลิกNext
การตั้งค่า Step 2 : Add permissions นี้คือ:
Add permissions
» ค้นหา Permissions policies:?︎ AmazonSSMAutomationRole
+ Enter
» Check✅
ที่ชื่อ AmazonSSMAutomationRole
» คลิกNext
การตั้งค่า Step 3 : Name, review, and create นี้คือ:
» Role name:tinnakorn-schedule-start-event-ssm-automation-role
(ชื่ออะไรก็ได้)
เลื่อนลงมาด้านล่างสุด คลิกCreate role
ค้นหาชื่อ Role ที่สร้างไปเมื่อสักครู่นี้:?︎ tinnakorn-schedule-start-event-ssm-automation-role
+ Enter
จากนั้นคลิกที่ Role name ของเรา
คลิกที่หัวข้อTrust relationships
ตามด้วยเลือกEdit trust policy
แก้ไข Code ที่ "Service": โดยการเพิ่ม"ssm.amazonaws.com"
ลงไป
เพื่อให้ง่ายต่อการแก้ไข แนะนำให้ลบ Code เก่าในช่อง Edit trust policy ออกให้หมดและ Copy Code ด้านล่างนี้วางลงไปแทนที่
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ec2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
เลื่อนลงมาด้านล่างสุด คลิกUpdate policy
มาดูที่หัวข้อTrust relationships
อีกครั้ง จะเห็นว่าแก้ไข Code เสร็จเรียบร้อยแล้ว
วิธีตั้งค่ากำหนดการ Start EC2 Instance
เราจะสาธิตวิธีตั้งค่ากำหนดการ Start EC2 Instance ใน Service Amazon EventBridge โดยจะใช้ชื่อว่าtinnakorn-schedule-start
ซึ่งเป็นชื่อเดียวกับ Instance นั่นเอง
ค้นหา?︎ Amazon EventBridge
» เลือกAmazon EventBridge
เมื่อเข้ามาที่ Amazon EventBridge แล้ว มาที่เมนูด้านซ้าย เลือกRules
มาที่หัวข้อ Rules คลิกCreate rule
เมื่อเข้ามาหน้า Create rule แล้ว สามารถดูการตั้งค่านี้เป็นแนวทางได้เลย
การตั้งค่าหัวข้อ Name and description นี้คือ:
» Name:tinnakorn-schedule-start
» Description - optional:tinnakorn-schedule-start
การตั้งค่าหัวข้อ Define pattern นี้คือ:
» Build or customize an Event Pattern or set a Schedule to invoke Targets.:⚫ Schedule
» เลือก⚫ Cron expression:
ตามด้วยใส่วันที่และเวลาที่เราต้องการลบ:50 9 * * ? *
(เวลาประเทศไทยคือ16:50
นาที)
» เมื่อใส่วันที่และเวลาแล้ว จะมี Next 10 trigger date(s) ปรากฎขึ้นมา เลือก:Local time zone ▼
สามารถศึกษาเรื่อง Cron expression เพิ่มเติมได้ที่ : https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
การตั้งค่าหัวข้อ Select targets นี้คือ:
Target
» เลือกSystems Manager Automation ▼
» Document:AWS-StartEC2Instance ▼
มาที่หน้า EC2 Instance ของเรา คลิก❐
เพื่อ Copy Instance ID แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก็ได้
มาที่ IAM แล้วเข้ามาที่ Role ของเรา ตัวอย่างนี้คือtinnakorn-schedule-start-event-ssm-automation-role
จากนั้น Copy ARN แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก็ได้
นำ Instance ID กับ ARN มาวางตามตัวอย่างดังนี้
» InstanceId*:i-*****************
เมื่อวางไปแล้วจะเป็น["i-*****************"]
อัตโนมัติ
» AutomationAssumeRole*:arn:aws:iam::************:role/tinnakorn-schedule-start-event-ssm-automation-role
⚫ Create a new role for this specific resource:tinnakorn-schedule-start_Amazon_EventBridge_Invoke_Start
※ตัวอย่างการใส่ชื่อ role
# ชื่อ EC2 Instance ของเรา = "tinnakorn-schedule-start_" # ชื่อค่าเริ่มต้นของ Role = "Amazon_EventBridge_Invoke_Start_Automation_Execution_1763111298" # ให้ทำการลบตั้งแต่ "_Automation_Execution_1763111298" ก็จะได้เป็น "Amazon_EventBridge_Invoke_Start" # การรวมชื่อโดยการนำชื่อ EC2 Instance ของเรากับชื่อ role มารวมกันตามด้านล่างนี้ # "tinnakorn-schedule-start_" + "Amazon_EventBridge_Invoke_Start" ก็จะได้เป็น "tinnakorn-schedule-start_Amazon_EventBridge_Invoke_Start"
↓ ตัวอย่างนี้จะใส่ชื่อ role ตามด้านล่างนี้ แต่จริงๆ แล้วไม่ต้องทำแบบนี้ก็ได้ จะใส่ชื่ออะไรก็ได้ที่ทำให้เราจำง่ายที่สุด
tinnakorn-schedule-start_Amazon_EventBridge_Invoke_Start
เลื่อนลงมาด้านล่างสุด คลิกCreate
เมื่อมาหน้านี้แล้ว ให้คลิกที่ชื่อ Rule ของเรา
จากนั้นตรวจสอบข้อมูลที่เราได้ตั้งค่าไว้ในหน้านี้
กลับมาที่หน้า EC2 Instance ของเรา แล้วสังเกตการเปลี่ยนแปลงของ Instance ตามเวลาที่เราได้ระบุไว้
เมื่อ Instance state เป็น Running การ Start Instance ก็เสร็จสมบูรณ์
ในกรณีที่เราต้องการปิดการใช้งาน Instance นี้อีกครั้ง ก็สามารถ Stop Instance ด้วยตัวเองได้ปกติ
ไปที่Instance state ▼
เลือกStop instance
คลิกStop
เมื่อ Instance state เป็น Stopped การปิดการใช้งานชั่วคราวเสร็จสมบูรณ์
การตรวจสอบข้อมูลการใช้งานย้อนหลังด้วย CloudTrail
เมื่อเราได้ดำเนินการสิ่งต่างๆ ใน AWS นี้ไปแล้ว เราสามารถเข้ามาตรวจสอบสิ่งที่ดำเนินการย้อนหลังได้ที่ CloudTrail
ค้นหา?︎ CloudTrail
» เลือกCloudTrail
เมื่อเข้ามาที่ CloudTrail แล้ว มาที่เมนูด้านซ้าย เลือกEvent history
มาที่ Event history ในส่วนนี้เราสามารถเลือกดูข้อมูลย้อนหลังที่ดำเนินการไปก่อนหน้านี้ได้
ตัวอย่างนี้จะเข้าไปดูที่StopInstances
เมื่อเข้ามาหน้า StopInstance แล้ว สามารถตรวจสอบข้อมูลการ Start EC2 Instance ได้ว่าเรียบร้อยดีหรือไม่
การลบ Features ที่ได้ใช้งานไปใน Services ของ AWS
เมื่อเราใช้งาน Features ใน Services ของ AWS ไปแล้ว เราสามารถลบออกได้ด้วยตัวเองง่ายๆ สามารถทำตามขั้นตอนเหล่านี้ได้เลย
※สิ่งที่จะลบออกคือ:
- Amazon EventBridge
- IAM
- Roles
- Policies
- Instance
- Security Groups
- Key Pairs
การลบ Rule ใน Amazon EventBridge
มาที่หน้า Amazon EventBridge ทำการลบดังนี้
» เลือกRules
» คลิก⚫
ที่ชื่อของเรา
» คลิกDelete
คลิกDelete
การลบ Roles กับ Policies ใน IAM
※การลบ Roles ใน IAM
เข้ามาที่ Service IAM โดยค้นหา?︎ IAM
» เลือกIAM
จากนั้นเริ่มทำการลบ Features Roles กับ Policies ใน Service IAM ได้เลย
Roles นี้จะมี 2 อัน ให้ทำการลบ Roles ตามนี้
① มาที่เมนูด้านซ้าย เลือกRoles
② ค้นหาชื่อ role ที่สร้างไว้?︎ tinnakorn-schedule-start-event-ssm-automation-role
+ Enter
③ Check✅
ที่ชื่อของเรา
④ คลิกDelete
คัดลอกชื่อในช่องสีแดงมาวางในช่องด้านล่าง จากนั้นคลิกDelete
Role ที่ชื่อว่าtinnakorn-schedule-start_Amazon_EventBridge_Invoke_Start
ให้ลบเหมือนกับขั้นตอนด้านบนได้เลย
※การลบ Policies ใน IAM
ทำการลบ Policies ตามนี้
① มาที่เมนูด้านซ้าย เลือกPolicies
② ค้นหาโดยใส่ชื่อเดียวกับที่เราสร้าง role ไว้?︎ tinnakorn-schedule-start
+ Enter
③ Check✅
ที่ชื่อของเรา
④ คลิกActions ▼
⑤ เลือกDelete
คัดลอกชื่อในช่องสีแดงมาวางในช่องด้านล่าง จากนั้นคลิกDelete
การลบ Instance, Security Groups, Key Pairs และ EIP ใน EC2
เข้ามาที่ Service EC2 โดยค้นหา?︎ EC2
» เลือกEC2
จากนั้นเริ่มทำการลบ Features Instance, Security Groups และ Key Pairs ใน Service EC2 ได้เลย
※การลบ Instance ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Instance เลือกInstance
มาที่หน้า Instance ของเรา คลิกInstance state ▼
เลือกTerminate instance
คลิกTerminate
เมื่อ Instance state เปลี่ยนเป็น ⊝Terminated
※การลบ Security Groups ใน EC2
ก่อนที่เราจะทำการลบ Security Groups เราต้องทำการ Terminate Instance จนกว่า Instance State เปลี่ยนเป็น ⊝Terminated
จึงจะสามารถลบ Security Groups ได้ เพราะว่าถ้าการ Terminate ไม่เสร็จสมบูรณ์ ก็จะทำให้มีแจ้งเตือน Error และไม่สามารถลบได้นั่นเอง
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกSecurity Groups
ค้นหาชื่อ Security Group ของเรา โดยใส่ชื่อเดียวกับ Instance ของเราลงไป
ตัวอย่างนี้คือ?︎ tinnakorn-schedule-start
+ Enter ตามด้วย Check✅
ที่ชื่อของเรา
คลิกActions ▼
เลือกDelete security groups
คลิกDelete
※การลบ Key Pairs ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกKey Pairs
ค้นหาชื่อ Key Pairs ของเรา โดยใส่ชื่อเดียวกับ Instance ของเราลงไป
ตัวอย่างนี้คือ?︎ tinnakorn-schedule-start
+ Enter ตามด้วย Check✅
ที่ชื่อของเรา
คลิกที่Actions ▼
เลือกDelete
พิมพ์คำว่าDelete
ลงไป ตามด้วยคลิกDelete
※การลบ Elastic IP (EIP) ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกElastic IPs
การลบ EIP นี้คือ
» ค้นหาชื่อ Elastic IP addresses ของเรา ตัวอย่างนี้คือ?︎ tinnakorn-schedule-start
+ Enter
» Check✅
ที่ชื่อของเรา (โดยปกติจะ Check ให้อยู่แล้ว)
» มาที่ด้านขวา คลิกActions ▼
» เลือกRelease Elastic IP addresses
คลิกRelease
สรุป
ในบทความนี้ก็ได้สาธิตวิธีตั้งค่ากำหนดการ Start Instance อัตโนมัติด้วย Amazon EventBridge เรียบร้อยแล้ว ซึ่งการตั้งค่านี้ จะช่วยเพิ่มความสะดวกสบายในการทำงานให้กับเรามากยิ่งขึ้น เพราะเราสามารถกำหนดวัน เวลา ที่ต้องการ Start Instance ได้โดยไม่ต้องรอจนกว่าจะถึงวันที่ต้องการ Start EC2 Instance และไม่ต้องมาเสียเวลาเปิดการใช้งานด้วยตัวเอง
ตัวอย่างเช่น ถ้าเราต้องการใช้งานเซิร์ฟเวอร์ Instance ก่อนเวลางาน บางครั้งเรามีงานอื่นที่ต้องเตรียม แต่เราอาจจะลืมหรือไม่สะดวกที่จะ Start EC2 Instance ด้วยตัวเอง เราก็สามารถ Start EC2 Instance ด้วยการตั้งค่านี้ได้ตลอดเวลา นอกจากนี้ยังช่วยให้งานของคุณมีความราบรื่น และมีประสิทธิภาพมากยิ่งขึ้นอีกด้วย
คุณสามารถสร้าง Instance โดยตั้งค่ากำหนดการ Stop/Start Instance อัตโนมัติเฉพาะช่วงเวลาที่ต้องการใช้งานได้ ถ้าคุณเข้าใจฟังก์ชันต่างๆ ใน Service ของ AWS และสามารถใช้งาน AWS ได้เป็นอย่างดี ก็จะทำให้ลดค่าใช้จ่ายได้เป็นอย่างมาก
บทความที่เกี่ยวข้อง
- วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy
- การติดตั้ง Python ใน Amazon Linux 2 บน EC2
- วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge
- วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
- การ Shutdown ระบบปฏิบัติการ, Terminate, Stop, Restart ของ EC2